home *** CD-ROM | disk | FTP | other *** search
/ Power Tools for Macintosh / Power Tools for Macintosh (SoftBit)(1992).iso / Applications / Alpha 4.01 / ACMDS / Time⁄Date.c < prev    next >
C/C++ Source or Header  |  1990-08-15  |  4KB  |  139 lines

  1. /****************************************************************
  2. *                                                               *
  3. * Paste Time/Date - paste the current time, or current date     *
  4. *                                                               *
  5. * Copyright © 1990 Karl J. Smith. All Rights Reserved           *
  6. *                                                               *
  7. * email: ksmith@jarthur.claremont.edu                           *
  8. *                                                               *
  9. * 8/10/90                                                       *
  10. *                                                               *
  11. * When debugging, set the project type to application,          *
  12. * and add the ANSI project.                                     *
  13. *                                                               *
  14. * When all your bugs are out, 'undef' DEBUG, set the project    *
  15. * type to Code Resource, with type = ACMD, name = <the name     *
  16. * of the function>, file type to 'AEXT', and the purgeable      *
  17. * flag set to true.                                             *
  18. *                                                               *
  19. * Also, you need to remove the ANSI project from the ACMD       *
  20. * project and replace it with the ANSI-A4 project if you use    *
  21. * any functions in ANSI, such as strlen.                        *
  22. *                                                               *
  23. * If you are not using THINK C, I'm not quite sure what you     *
  24. * should do. :-)                                                *
  25. *                                                               *
  26. ****************************************************************/
  27.  
  28. #undef DO_TIME
  29. #define DO_DATE
  30.  
  31. /*
  32. ** If you want a time ACMD, define DO_TIME. If you want a date ACMD,     
  33. ** define DO_DATE. If you want time and date, create a macro to insert both.
  34. **
  35. ** Both of these ACMD's take input in the form of a single character at
  36. ** the beginning of the stream of chars passed to them. The rest of the
  37. ** characters are ignored.
  38. **
  39. ** The Time ACMD will include seconds if 'S' is the first character.
  40. ** Any other character will return the time without seconds.
  41. **
  42. ** The Date ACMD will return short, long, or abbrev forms if the first
  43. ** character is 'S', 'L', or 'A' respectively. 'A' will be assumed by
  44. ** default.
  45. */
  46.  
  47. #undef    DEBUG
  48.  
  49. #include <stdio.h>
  50. #include <string.h>
  51.  
  52. /* Prototypes */
  53. char *
  54. #ifdef    DEBUG
  55. dummy(char *inStr);
  56. #else    DEBUG
  57. main(char *inStr);
  58. #endif    DEBUG
  59.  
  60. char *
  61. #ifdef    DEBUG
  62. dummy(inStr)
  63. #else    DEBUG
  64. main(inStr)
  65. #endif    DEBUG
  66. char    *inStr;
  67. {
  68.     long int theTime;
  69.     char *resultString;
  70.     
  71.     resultString = (char *)NewPtr(256L);
  72.     if (resultString == NULL)
  73.         {
  74.             SysBeep(5);
  75.             return(inStr);
  76.         }
  77.     GetDateTime(&theTime);
  78.     
  79. #ifdef DO_TIME
  80.     IUTimeString(theTime, *inStr == 'S', resultString);
  81. #endif DO_TIME
  82.  
  83. #ifdef DO_DATE
  84.     switch (*inStr) 
  85.     {
  86.         case 'S' : IUDateString(theTime, shortDate, resultString);
  87.                     break;
  88.         case 'L' : IUDateString(theTime, longDate, resultString);
  89.                     break;
  90.         default : IUDateString(theTime, abbrevDate, resultString);
  91.                     break;
  92.     }
  93. #endif DO_DATE
  94.  
  95.     DisposPtr(inStr);
  96.     PtoCstr(resultString);
  97.     return(resultString);
  98. }
  99.  
  100.  
  101. #ifdef    DEBUG
  102.  
  103. char * ConvertRtoN(char *theStr);
  104.  
  105. char * ConvertRtoN(theStr)
  106.     char *theStr;
  107. {
  108.     char *currentChar;
  109.     
  110.     for (currentChar = theStr;*currentChar != 0; currentChar++)
  111.         if (*currentChar == '\r')
  112.             *currentChar = '\n';
  113. }
  114.     
  115. main()
  116. {
  117.     char    *str = "ANice\rand\reasy\rABCDEFGHIJKLMNOPQRSTUVWXYZ\rabcdefghijklmnopqrstuvwxyz";
  118.     char    *ret;
  119.     char    once[255];
  120.         
  121.     strcpy(once, str);                
  122.     
  123.     ret = dummy(once);
  124.     
  125.     ConvertRtoN(ret);                /* Convert '\r' to '\n' so we can see them in a printf */
  126.     ConvertRtoN(str);
  127.         
  128.     printf("The original is:\n\n%s", str);
  129.     printf("\n----\n\nThe result is:\n\n%s", ret);
  130.     
  131. }
  132. #endif    DEBUG
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.